
//最新的翻页判断函数
function pageFuncNew(num, bignum, smallnum, bigarray, smallarray, numCsub) {
  var pose
  /* 判断上一题是否为综合题 */
  function pageFuncTime_1(bignum, smallnum, bigarray, smallarray, numCsub) {
    //上一题是综合题
    if (smallarray[smallnum].typecode == "1ab96071-3741-40b7-983c-bba5a031fe0d") {
      numCsub = smallarray[smallnum].csub.length - 1//更新综合题小问号
      pose = [bignum, smallnum, numCsub]
      return pose
    }
    //上一题不是综合题
    else {
      pose = [bignum, smallnum, numCsub]
      return pose
    }
  }
  /*   切换上一题(当前不是综合题) */
  function pageFuncTime_(bignum, smallnum, bigarray, smallarray, numCsub) {
    //如果当前小题是第一个（则切上一组大题对应的小题，并且从后向前推）
    if (smallnum === 0) {
      //如果当前大题是第一个（在当前小题是第一个的前提下，暨此题是第一题）
      if (bignum === 0) {
        pose = "no"//到头了
        return pose
      }
      else {
        bignum = bignum - 1//大题的题号减一
        smallarray = bigarray[bignum].qt//小题数组
        smallnum = smallarray.length - 1//小题题号
        //判断上一题是否为综合题 
        return pageFuncTime_1(bignum, smallnum, bigarray, smallarray, numCsub)
      }
    }
    //如果当前小题不是第一个（则小题题号减一）
    else {
      smallnum = smallnum - 1
      //判断上一题是否为综合题 
      return pageFuncTime_1(bignum, smallnum, bigarray, smallarray, numCsub)
    }
  }
  /* 上一页 */
  function pageFuncTime(bignum, smallnum, bigarray, smallarray, numCsub) {
    //当前的题目是综合题
    if (smallarray[smallnum].typecode == "1ab96071-3741-40b7-983c-bba5a031fe0d") {
      //当前的综合题小题号为0
      if (numCsub == 0) {
        //切换上一题
        return pageFuncTime_(bignum, smallnum, bigarray, smallarray, numCsub)
      }
      //当前的综合题小题号不为0
      else {
        numCsub = numCsub - 1//切换上一小问
        pose = [bignum, smallnum, numCsub]
        return pose
      }
    }
    //当前的题目不是综合题
    else {
      //切换上一题
      return pageFuncTime_(bignum, smallnum, bigarray, smallarray, numCsub)
    }
  }
  /* 判断下一题是否为综合题 */
  function pageFuncPlus_1(bignum, smallnum, bigarray, smallarray, numCsub) {
    //下一题是综合题
    if (smallarray[smallnum].typecode == "1ab96071-3741-40b7-983c-bba5a031fe0d") {
      numCsub = 0//更新综合题小问号
      pose = [bignum, smallnum, numCsub]
      return pose
    }
    //下一题不是综合题
    else {
      numCsub = 0//更新综合题小问号
      pose = [bignum, smallnum, numCsub]
      return pose
    }
  }
  /*   切换下一题(当前不是综合题) */
  function pageFuncPlus_(bignum, smallnum, bigarray, smallarray, numCsub) {
    //如果当前小题是最后一个（则切下一组大题对应的小题，并且从前向后推）
    if (smallnum == smallarray.length - 1) {
      //如果当前大题是最后一个（在当前大题是最后一个的前提下，暨此题是最后一题）
      if (bignum == bigarray.length - 1) {
        pose = "no"//到尾了
        return pose
      }
      else {
        bignum = bignum + 1//大题的题号加一
        smallarray = bigarray[bignum].qt//小题数组
        smallnum = 0//小题题号
        //判断下一题是否为综合题 
        return pageFuncPlus_1(bignum, smallnum, bigarray, smallarray, numCsub)
      }
    }
    //如果当前小题不是第一个（则小题题号减一）
    else {
      smallnum = smallnum + 1
      //判断上一题是否为综合题 
      return pageFuncPlus_1(bignum, smallnum, bigarray, smallarray, numCsub)
    }
  }
  /* 下一页 */
  function pageFuncPlus(bignum, smallnum, bigarray, smallarray, numCsub) {
    //当前的题目是综合题
    if (smallarray[smallnum].typecode == "1ab96071-3741-40b7-983c-bba5a031fe0d") {
      //当前的综合题小题号为最后一个
      // console.log("%%%%%%%%%%%%%%%%%%%%%%%%%" + bignum + smallnum + numCsub)
      if (numCsub == smallarray[smallnum].csub.length - 1) {
        //切换下一题
        return pageFuncPlus_(bignum, smallnum, bigarray, smallarray, numCsub)
      }
      //当前的综合题小题号不为最后一个
      else {
        numCsub = numCsub + 1//切换下一小问
        pose = [bignum, smallnum, numCsub]
        return pose
      }
    }
    //当前的题目不是综合题
    else {
      //切换下一题
      return pageFuncPlus_(bignum, smallnum, bigarray, smallarray, numCsub)
    }
  }
  if (num == 0) {
    return pageFuncTime(bignum, smallnum, bigarray, smallarray, numCsub)//上一页
  }
  else {
    return pageFuncPlus(bignum, smallnum, bigarray, smallarray, numCsub)//下一页
  }
}



//数组变字母选项
function ArrayToE(array) {
  var select = []
  array.forEach(element => {
    switch (element) {
      case 0:
        select.push("A")
        break;
      case 1:
        select.push("B")
        break;
      case 2:
        select.push("C")
        break;
      case 3:
        select.push("D")
        break;
      case 4:
        select.push("E")
        break;
      case 5:
        select.push("F")
        break;
      case 6:
        select.push("G")
        break;
    }
  });
  return select
}
//字母变数组
function EtoArray(obj) {
  var arraynum = []
  //字母为空(或不存在)
  if (obj == '' || !obj) {
    return arraynum
  }
  else {
    var select = []
    select = obj.split(",")//分割选项
    select.forEach(element => {
      switch (element) {
        case "A":
          arraynum.push(0)
          break;
        case "B":
          arraynum.push(1)
          break;
        case "C":
          arraynum.push(2)
          break;
        case "D":
          arraynum.push(3)
          break;
        case "E":
          arraynum.push(4)
          break;
        case "F":
          arraynum.push(5)
          break;
        case "G":
          arraynum.push(6)
          break;
      }
    });
    return arraynum
  }
}
//处理填空题的答题区域（显示答题区域）
function brkType (str) {
  //获取某个字符串出现多少次
  function patch(re, s) {
    var n = (s.split(re)).length - 1;
    return n
  }
  //获取每一个填空的类型（bk[后面的数字）
  function patch_(re, s, num) {
    var array = s.split(re)
    var g = array[num]
    var array_ = g.split("")
    var gg = array_[0]
    return gg
  }
  var list = [];
  if (str.indexOf('bk[') >= 0) {
    //获取填空的类型，1是普通填空，2是画图，3是录音
    var num = patch('bk[', str);
    for (let i = 0; i <= num - 1; i++) {
      var type = patch_('bk[', str, i + 1)
      list.push(type);
    }
  }
  return list
}
//填空题答题区域（获得每个空的对象组成答案数组）

function objToAnswerarr(array, obj) {
  //如果答案数组为空
  if (array.length == 0) {
    array.push(obj)
  }
  //答案数组不为空
  else {
    var isin = 0//对象是否存在于该数组当中（0是不存在，1是存在）
    for (let i = 0; i <= array.length - 1; i++) {
      //如果该对象存在于数组，替代数组中的该对象
      if (array[i].order == obj.order) {
        array[i].data = obj.data//(替代存在的对象)
        isin = 1
      }
    }
    /*  array.forEach((element, index, array) => {
 
     }); */
    // console.log("$$$^^" + JSON.stringify(array))
    //对象不存在于该数组当中
    if (isin == 0) {
      array.push(obj)
    }
  }
  return array
}
//填空题答题区域（获得数组返回每个空的对象）

function arrToobj (array_, index_) {
  var objdata
  //如果答案数组为空
  if (array_.length == 0) {
    objdata = ''
  }
  //答案数组不为空
  else {
    //console.log(array_[0]+"%%%%%%%%%%%%^^^^^^^^^^^^^")
    array_.forEach((element, index, array) => {
      if (element.order == index_ + 1) {
        objdata = element.data//返回出对应的答案
      }
    })
  }
  return objdata
}
//填空题正确答案（逗号分割）
function ansewrcorret(obj, index) {
  var att = []
  att = obj.split(",")
  return att[index]
}
//检查题干是否有音频（返回音频链接）
function checkHasMp3 (str) {
  var mp3Url = "";
  if (str.indexOf("audiosrc") > 0) {
    var newStr = str.substring(str.indexOf("audiosrc") + 10, str.indexOf("/>") - 1);
    mp3Url = newStr;
  }
  return mp3Url;
}
//检查题干是否有图片（返回图片链接）
function checkHasimg(str) {
  var img = "";
  if (str.indexOf("img") > 0) {
    var newStr = str.substring(str.indexOf("img") + 9, str.indexOf("/>") - 1);
    imgUrl = newStr;
  }
  return imgUrl;
}
//存在音频（图片）去除多余的标签
function withoutImg (str) {
  var newStr = str.substring(0, str.indexOf("<img"));
  return newStr;
}
//解析试卷获得每一道小题的id(综合题就是小问的id)
function testlistid (testlist) {
  var id = []
  testlist.forEach((element, index) => {
    element.qt.forEach((elementqt, indexqt) => {
      if (elementqt.csub) {
        elementqt.csub.forEach((elementcs, indexcs) => {
          id.push({ testid: elementcs.id, num: index.toString() + indexqt.toString() + indexcs.toString() })
        });
      }
      else {
        id.push({ testid: elementqt.id, num: index.toString() + indexqt.toString() })
      }
    });
  });
  return id
}
//将获得的我的答案和每一道小题的id，再拼接到原来的数组当中
function testlistanswer(idarray, testlist, ishow) {
  testlist.forEach((element, index) => {
    element.qt.forEach((elementqt, indexqt) => {
      if (elementqt.csub) {
        elementqt.csub.forEach((elementcs, indexcs) => {
          var num = index.toString() + indexqt.toString() + indexcs.toString()
          idarray.forEach(elementid => {
            if (elementid.num == num) {
              elementcs.myanswer = elementid.myanswer
              elementcs.myid = elementid.id
              elementcs.point = elementid.point
              elementcs.say = elementid.say
            }
          });
        });
      }
      else {
        var num = index.toString() + indexqt.toString()
        idarray.forEach(elementid => {
          if (elementid.num == num) {
            elementqt.myanswer = elementid.myanswer
            elementqt.myid = elementid.id
            elementqt.point = elementid.point
            elementqt.say = elementid.say
          }
        });
      }
    });
  });
  return testlist
}
//上传的答案包括数组转字母
function uparrToe (arr) {
  if (arr[0].type) {
    return arr
  }
  else {
    var select = []
    arr.forEach(element => {
      switch (element) {
        case 0:
          select.push("A")
          break;
        case 1:
          select.push("B")
          break;
        case 2:
          select.push("C")
          break;
        case 3:
          select.push("D")
          break;
        case 4:
          select.push("E")
          break;
        case 5:
          select.push("F")
          break;
        case 6:
          select.push("G")
          break;
      }
    });
    select = select.join(",")
    return select
  }
}
// 转换参数
function toQueryString (obj) {
  //encodeURIComponent(key)
  return obj ? Object.keys(obj).sort().map((key) => {
    var val = obj[key];
    if (Array.isArray(val)) {
      return val.sort().map(function (val2) {
        return key + '=' + val2;
      }).join('&');
    }
    return key + '=' + val;
  }).join('&') : '';
}
//判断是否可以提交
function isupanswer (testlist) {
  var isup = true//默认可以提交
  testlist.forEach((element, index) => {
    element.qt.forEach((elementqt, indexqt) => {
      if (elementqt.csub) {
        elementqt.csub.forEach((elementcs, indexcs) => {
          if (elementcs.myid == '' || elementcs.myid == undefined) {
            isup == false//不可以上传
          }
        });
      }
      else {
        if (elementqt.myid == '' || elementqt.myid == undefined) {
          isup == false//不可以上传
        }
      }
    });
  });
  return isup
}

//




module.exports = {
  switchnum: switchnum,
  pageFuncNew: pageFuncNew,
  testtype: testtype,
  replaceStrBk: replaceStrBk,
  suboption: suboption,
  ArrayToE: ArrayToE,
  EtoArray: EtoArray,
  brkType: brkType,
  objToAnswerarr: objToAnswerarr,
  arrToobj: arrToobj,
  ansewrcorret: ansewrcorret,
  checkHasMp3: checkHasMp3,
  checkHasimg: checkHasimg,
  withoutImg: withoutImg,
  testlistid: testlistid,
  testlistanswer: testlistanswer,
  uparrToe: uparrToe,
  toQueryString: toQueryString,
  isupanswer: isupanswer


}